package com.hoshiicloud.commissioncalculation.entity;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;

import lombok.*;
import lombok.experimental.Accessors;

/**
 * 总流水表(TradeFlow)trade_flow
 *
 * @author makejava
 * @since 2019-09-05 14:40:22
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("trade_flow")
public class TradeFlow extends Model<TradeFlow> {

    /**
     * id
     */
    @TableId("id")
    private Long id;

    /**
     * 租合ID
     */
    @TableField("companyid")
    private Long companyid;

    /**
     * 平台ID
     */
    @TableField("platformid")
    private Long platformid;

    /**
     * 店铺ID
     */
    @TableField("storeid")
    private Long storeid;

    /**
     * 流水日期
     */
    @TableField("txdate")
    private Date txdate;

    /**
     * 流水类型 1购物消费：购物进行支付 2售后退款：商城订单发生退款，进行冲账冲红 3经营结算：订单归档后商城将店铺应得收入划拨到店铺 4佣金结算：订单产生的佣金结算信息，从商城划拨 5重算冲账：后台重算，流水冲红冲账 6余额提现：提现申请成功到账后生成流水 7后台修改：后台增加、减少钱包余额  8系统冻结：将部分可用金额划拨到不可用金额  9系统解冻：将部分可用金额划拨到可用金额  99其他，不属于以下几种
     */
    @TableField("txtype")
    private Integer txtype;

    /**
     * 项目 购物消费：订单类型  售后退款：仅退款，退款退货  经营结算：店铺结算  佣金结算：佣金结算的名称，例如二级消费提成   重算冲账：重算类型  余额提现：申请提现，提现成功，提现失败  后台修改：后台增加，后台减少  系统冻结：冻结类型   系统解冻：结冻类型
     */
    @TableField("project")
    private String project;

    /**
     * 单号
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 交易金额
     */
    @TableField("amount")
    private BigDecimal amount;

    /**
     * 入账 账户类型 1租户 2商城    3店铺（含分店）    4供应商    5合作伙伴    6消费者    7会员    8员工    99其他，系统异常时记录
     */
    @TableField("transfel_in_acc_type")
    private Object transfelInAccType;

    /**
     * 入账 账户ID
     */
    @TableField("transfel_in_acc_id")
    private Long transfelInAccId;

    /**
     * 入账收款方式 0线下    1可用余额    2不可用余额    2支付宝    3微信    4银联    99其他
     */
    @TableField("transfel_in_type")
    private Object transfelInType;

    /**
     * 当前余额
     */
    @TableField("transfel_in_acc_banance")
    private BigDecimal transfelInAccBanance;

    /**
     * c出账 账户类型 1-消费者 2-合作伙伴 3-供应商 4-平台
     */
    @TableField("transfel_out_acc_type")
    private Object transfelOutAccType;

    /**
     * 出账 账户ID
     */
    @TableField("transfel_out_acc_id")
    private Long transfelOutAccId;

    /**
     * 出账账户当前余额
     */
    @TableField("transfel_out_acc_banance")
    private BigDecimal transfelOutAccBanance;

    /**
     * 出账付款方式 0线下    1可用余额    2不可用余额    2支付宝    3微信    4银联    99其他
     */
    @TableField("transfel_out_type")
    private Object transfelOutType;

    /**
     * 1成功 2已部分退款：关联订单金额仅部分退款 3已全部退款：关联订单金额已经全部退款 4已重算：流水冲账并重新计算 5已结算：佣金或店铺应收款正确划拨到对应账户 6已划账：可用/不可用账户间资金流动 7异常
     */
    @TableField("status")
    private Object status;

    /**
     * 是否删除
     */
    @TableField("deleted")
    private Object deleted;

    /**
     * 关联订单ID
     */
    @TableField("order_id")
    private Long orderId;

    /**
     * 售后订单id
     */
    @TableField("back_order_id")
    private Long backOrderId;

    /**
     * 流水id
     */
    @TableField("trade_flow_id")
    private Long tradeFlowId;

    /**
     * 备注
     */
    @TableField("description")
    private String description;

    /**
     * 建立人
     */
    @TableField("createdby")
    private String createdby;

    /**
     * 建立时间
     */
    @TableField("createdtime")
    private Date createdtime;

    /**
     * 修改时间
     */
    @TableField("updatedtime")
    private Date updatedtime;

    /**
     * 修改人
     */
    @TableField("updatedby")
    private String updatedby;

    /**
     * 获取主键值
     *
     * @return 主键值
     */
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}